package com.groupfour.attendancemanagementsystem.dao;

import com.groupfour.attendancemanagementsystem.entity.DTO.CRUClassesDTO;
import com.groupfour.attendancemanagementsystem.entity.VO.RClassesVO;
import com.groupfour.attendancemanagementsystem.entity.VO.RDepartmentVO;
import com.groupfour.attendancemanagementsystem.entity.VO.RMajorVO;
import com.groupfour.attendancemanagementsystem.entity.VO.RTeacherVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.sql.Timestamp;
import java.util.List;

@Mapper
public interface ClassesDao {

    /**
     * @author 卑微小峰
     * @return List<RDepartmentDTO>
     * 查询所有院系名称
     */
    List<RDepartmentVO> selectAllDepartment();

    /**
     * @author 卑微小峰
     * @param departmentCode
     * @return List<RMajorDTO>
     * 查询所有专业名称（全校或某一院系下）
     */
    List<RMajorVO> selectAllMajor(@Param("departmentCode") String departmentCode);

    /**
     * @author 卑微小峰
     * @return List<String>
     * 查询所有在职教师姓名
     */
    List<RTeacherVO> selectAllTeacherNameByEmploymentStatus();

    /**
     * @author 扶永超
     * @param cruClassesDTO
     * @param classesCode
     * @return int
     * 添加班级信息
     */
    int addClasses(@Param("cruClassesDTO") CRUClassesDTO cruClassesDTO, @Param("classesCode")String classesCode);

    /**
     * @author 扶永超
     * @param cruClassesVO
     * @param classesCode
     * @param updateTime
     * @return int
     * @describe 修改班级信息
     */
    int updateClasses(@Param("cruClassesDTO") CRUClassesDTO cruClassesVO, @Param("classesCode")String classesCode, @Param("updateTime")Timestamp updateTime);

    /**
     * @author 扶永超
     * @param cruClassesDTO
     * @return List<RClassesDTO>
     * @describe 查询所有班级信息
     */
    List<RClassesVO> selectClasses(CRUClassesDTO cruClassesDTO);

    /**
     * @author 卑微小峰
     * @param classesCode
     * @return CRUClassesVO
     * 查询指定班级信息（用于显示修改页面数据）
     */
    RClassesVO selectClassesByClassesCode(@Param("classesCode")String classesCode);
}
